# 传递任意数量的实参
# *toppings 中的星号让Python创建一个名为toppings的空元组，所有输入的值都被封装在该元组中

print('-----传递任意数量的实参，并以元组的格式进行存储-------')
def make_pizza(*toppings):
    print("Making a pizza with the following toppings: ")
    for topping in toppings:
        print(topping)
make_pizza('pepperoni')
make_pizza('mushrooms','green peppers','extra cheese')
# 使用任意数量的关键字实参
# 设计函数之初可能无法预想会接受多少数量的参数，此时可将函数设计为接受任意数量的参数，以键值对的形式传入
print('------传递任意数量的关键字实参------')
def build_profile(first:str,last:str,**user_info):
    # 返回一个字典，其中包含关于用户信息的一切
    profile = {'first_name': first, 'last_name': last}
    for key,value in user_info.items():
        profile[key] = value
    return profile

user_profile = build_profile('albert',
                             'einstein',
                             location = 'princeton',
                             field = 'physics')
print(user_profile)